<?php
// 加载系统配置文件
$dirList = explode ( '/', $_SERVER ['PHP_SELF'] );
require $_SERVER ["DOCUMENT_ROOT"] . "/$dirList[1]/conf/conf.php";
try {
	// 获取前台传入的数据
	$handle = fopen ( 'php://input', 'r' );
	$json = fgets ( $handle );
	$post_array = json_decode ( $json, true );
	// 获取此次通讯动作类型
	$action_type = $post_array ['ACTION_TYPE'];
	// 行为日志记录
	Util_log::action_log(__FILE__, '001', $action_type);
	//调式日志
	Util_log::debug(__FILE__, 'DEBUG');
	//错误日志
	Util_log::error(__FILE__, 'ERR');
	// 数据库连接管理类
	global $connMgr;
	$connMgr = new ConnManger ( $db_conf, $mem_conf );
	// ********通讯分发*********
	if ($action_type == AT_TEST) {
		// 测试通讯
		require PROJECT_ROOT . '/act/action/Test_act.php';
		$action = new Test_act( $connMgr, $post_array );
	}
	// 执行通讯处理，获取返回值
	$result = $action->execute ();
} catch ( Exception $e ) {
	// 记录抛出的异常信息
	$err_msg = $e->getMessage ();
	$err_file = $e->getFile ();
	$err_line = $e->getLine ();
	$msg = "错误信息:$err_msg! $err_file,第 $err_line 行";
	Util_log::error ( __FILE__, $msg );
	// 通知前台发生异常
	$result = array (
			RESULT => '2',
			ERR_MSG => '预料外的错误！' 
	);
}
// ***处理响应给前台的数据***
// 加入ID（前台获取机器IP较为困难）
$ip = $_SERVER ["REMOTE_ADDR"];
$result = array_merge ( $result, array (
		'IP_ADDRESS' => $ip 
) );
// 通讯结果JSON转码
$encode = json_encode ( $result );
// 计算MD5签名，保障传输数据完整性
$md5 = md5 ( $encode );
$result [MD5_KEY] = $md5;
// 将包括MD5在内的返回内容再次JSON转码
$encode = json_encode ( $result );
header ( 'Content-Type: application/json; charset=utf-8' );
header ( 'Data-Length: ' . strlen ( $encode ) );
echo trim ( $encode );
?>